#include <stdio.h>
#include "utils.h"

// 获取某个月的天数
int GetDaysInMonth(int year, int month) {
    static const int days_in_month[] = {31,28,31,30,31,30,31,31,30,31,30,31};
    if (month == 2 && IsLeapYear(year)) {
        return 29;
    }
    return days_in_month[month - 1];
}

// 打印月历
void monthcalendar_3(int year, int month) {
    int days = GetDaysInMonth(year, month);
    int firstWeekday = GetWeekday(year, month, 1);

    printf("\n======== %d年 %02d月 月历 ========\n", year, month);
    printf("日 一 二 三 四 五 六\n");

    int cur_pos = 0;
    // 打印月首前的空格（占位）
    for (int i = 0; i < firstWeekday; i++) {
        printf("   "); // 3个字符宽
        cur_pos++;
    }

    // 打印日期
    for (int day = 1; day <= days; day++) {
        printf("%2d ", day);
        cur_pos++;
        if (cur_pos % 7 == 0) {
            printf("\n"); // 每满7个字符换行
        }
    }

    if (cur_pos % 7 != 0) {
        printf("\n"); // 不足一行时换行
    }

    printf("==================================\n");
}

